﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using BLL;
using Model;
using System.IO;
using HRP.Utilidades;

namespace HRP.Private.Funcionarios.Documentos
{
    public partial class Editar : System.Web.UI.Page
    {

        public string idField;
        private string _NomeFuncionario
        {
            get
            {
                if (ViewState["NomeFuncionario"] != null)
                {
                    return (string)ViewState["NomeFuncionario"];
                }
                return string.Empty;
            }
            set
            {
                ViewState["NomeFuncionario"] = value;
            }
        }
        public string NomeFuncionario
        {
            get
            {
                return _NomeFuncionario;
            }
            set
            {
                _NomeFuncionario = value;
            }
        }
        protected void Page_Load(object sender, EventArgs e)
        {
            if (Request.QueryString["id"] != null && Request.QueryString["funcId"] != null && Session["userid"] != null && Session["EmpresaActual"] != null && Session["idclient"] != null)
            {
                int docId = 0;
                Int32.TryParse(Request.QueryString["id"], out docId);
                int funcId = 0;
                Int32.TryParse(Request.QueryString["funcId"], out funcId);
                if (docId > 0 && funcId>0)
                {
                    idField = "\n$(\"#" + dataInicioTB.ClientID + "\"" + @").datepicker({ 
                                    dateFormat: 'yy-mm-dd',
                                    monthNames: ['Janeiro','Fevereiro','Março','Abril','Maio','Junho','Julho','Agosto','Setembro','Outubro','Novembro','Dezembro'],
                                    dayNamesMin: ['D', 'S', 'T', 'Q', 'Q', 'S', 'S'],
                                    dayNamesShort: ['Dom', 'Seg', 'Ter', 'Qua', 'Qui', 'Sex', 'Sab']});";
                    idField += "\n$(\"#" + dataFimTB.ClientID + "\"" + @").datepicker({ 
                                    dateFormat: 'yy-mm-dd', 
                                    monthNames: ['Janeiro','Fevereiro','Março','Abril','Maio','Junho','Julho','Agosto','Setembro','Outubro','Novembro','Dezembro'],
                                    dayNamesMin: ['D', 'S', 'T', 'Q', 'Q', 'S', 'S'],
                                    dayNamesShort: ['Dom', 'Seg', 'Ter', 'Qua', 'Qui', 'Sex', 'Sab']});";

                    criarDocFuncBT.Click += criarNovoDocBT_Click;
                    if (!Page.IsPostBack)
                    {
                        carregarDocumento( docId,  funcId);
                        carregarFuncionario(funcId);
                    }
                    formPanel.Visible = true;
                    msgPanel.Visible = false;
                    erroPanel.Visible = false;
                }
                else
                {
                    formPanel.Visible = false;
                    msgPanel.Visible = false;
                    erroPanel.Visible = true;
                }
            }
            else
            {
                formPanel.Visible = false;
                msgPanel.Visible = false;
                erroPanel.Visible = true;
            }
        }


        protected void criarNovoDocBT_Click(object sender, EventArgs e)
        {
            try
            {
                string path = "path";
                int idDoc = 0;
                Int32.TryParse(Request.QueryString["id"], out idDoc);
                int funcId = 0;
                Int32.TryParse(Request.QueryString["funcId"], out funcId);
                if (funcId > 0 && idDoc>0)
                {
                    if (FileUpload1.HasFile && FileUpload1.PostedFile.ContentType.StartsWith("image"))
                    {
                        hrp_empresas empresa = (hrp_empresas)Session["EmpresaActual"];

                        string fileName = FileUpload1.PostedFile.FileName;
                        FileInfo fi = new FileInfo(fileName);
                        string ext = fi.Extension;

                        path = Server.MapPath("/images/" + empresa.id + "/") + Guid.NewGuid().ToString() + ext;

                        string path1 = Server.MapPath("/images/" + empresa.id + "/");
                        if (!System.IO.Directory.Exists(path1))
                        {
                            System.IO.Directory.CreateDirectory(path1);
                        }
                        FileUpload1.PostedFile.SaveAs(path);
                        //gravar na bd caminho de imagem
                        int index = path.LastIndexOf("images");
                        string pathrec = path.Substring(index - 1, (path.Count() - index + 1));
                    }
                    DateTime dataI = Convert.ToDateTime(dataInicioTB.Text);
                    DateTime dataF = string.IsNullOrEmpty(dataFimTB.Text) ? DefinicoesSite.DataFimAbsurda : Convert.ToDateTime(dataFimTB.Text);
                    var result = Documento_BLL.Instance.updateDocumentoFuncionario(idDoc, (int)Session["idclient"], Session["userid"].ToString(), Request.UserHostAddress,
                         funcId, Convert.ToInt32(documentosList.SelectedValue), path, numeroTB.Text, dataI, dataF);

                    formPanel.Visible = false;
                    msgPanel.Visible = true;
                    erroPanel.Visible = false;
                        
                }

            }
            catch (Exception)
            {

                formPanel.Visible = false;
                msgPanel.Visible = false;
                erroPanel.Visible = true; 
            }
        }

        void carregarDocumento(int docId, int funcId)
        {
            documentosList.DataSource = Documento_BLL.Instance.obterDocumentos();
            documentosList.DataBind();
            var documentoFuncionario = Documento_BLL.Instance.obterDocumentosFuncionarioPorID(docId, funcId);
            string pattern = "yyyy-MM-dd";
            dataInicioTB.Text = documentoFuncionario.DataInicio.ToString(pattern);
            dataFimTB.Text = documentoFuncionario.DataValidade.ToString(pattern);
            numeroTB.Text = documentoFuncionario.NumeroDocumento.ToString();
            documentosList.SelectedValue = documentoFuncionario.id_tipo_doc.ToString();
        }
        void carregarFuncionario(int funcId)
        {
            var funcionario = Funcionario_BLL.Instance.ObterFuncionarioPorId1(funcId);
            NomeFuncionario = funcionario.nome;
        }
    }
}